NT 390 特價中
本課程從頭開始教導資料結構(linked lists,binary search trees,hash tables)。資料結構可以讓你應用程式提高效率,性能,速度和可擴展性。你將了解什麼是資料結構,為什麼它們是重要的,以及如何在 JavaScript 中編寫它們。你還將學習其它重要的程式設計概念,如遞歸,時間複雜度,“this” 關鍵字,prototype 物件,建構函數,因為資料結構非常自然地使用這些概念。本課程大量使用圖表和動畫來幫助更容易理解教材。
https://softnshare.com/learning-data-structures-in-javascript-from-scratch/
同時也有3部Youtube影片,追蹤數超過2,290的網紅Youji,也在其Youtube影片中提到,お客様の中にJavaScriptに詳しい方はいらっしゃいませんか? セレクトボックスの選択肢の配列を切り替える方法がワーカリーマセーン よってフェス用ステージと通常ステージの切り替えにはツールの再起動を要します。悪しからず ~~~~~~~~~~~~ 日本語 / Japanese ~~~~~~~~~...
「this in javascript」的推薦目錄:
- 關於this in javascript 在 軟體開發學習資訊分享 Facebook 的最佳解答
- 關於this in javascript 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於this in javascript 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於this in javascript 在 Youji Youtube 的最佳貼文
- 關於this in javascript 在 Youji Youtube 的最讚貼文
- 關於this in javascript 在 serpentza Youtube 的最佳解答
- 關於this in javascript 在 鐵人賽:JavaScript 的this 到底是誰? | 卡斯伯Blog - 前端 的評價
- 關於this in javascript 在 Demystifying JavaScript this Keyword with Practical Examples 的評價
- 關於this in javascript 在 What does 'var that = this;' mean in JavaScript? - Stack Overflow 的評價
- 關於this in javascript 在 Understanding Binding and 'this' in Javascript by zach.dev 的評價
this in javascript 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Scaling Ethereum 參賽心得
✍️ Johnson
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Scaling Ethereum 是一場由 ETHGlobal 所舉辦的線上黑客松,也是我第一次參加與以太坊有關的黑客松活動,這篇文章就來分享一人參賽的過程與心得。
源起
一開始是在 telegram 群組中得知這場比賽的消息,因緣際會之下剛好有人想組隊參賽,於是就在報名截止的前一天一起跟著報名了。
報名的方式除了填一些基本資料外,最特別的是還要 stack 以太幣,也就是要傳送 0.01 顆以太幣給主辦方,規則是必須在比賽的最後,有提交作品的人才能贖回 0.01 顆以太幣,之後看到 meme 頻道有人留言:
When your project is incomplete but you submit to get back stake.
一方面,這確實也會激勵你好好把比賽完成,就算沒做完也要有些成果上去,這也是主辦方秉持的精神,他們認為大家來黑客松相互學習成長,競賽獎金則是其次。
獎金
比賽方式是由 25 個左右的贊助者(sponsor)分別提供獎金,每個 sponsor 都有錄製一段影片,說明怎麼獲得他們的獎金,大部分會要你使用他們開發的工具,或者必須跟 sponsor 在做的研究有關,去實作出創新的作品。可參考:Prizes — Scaling Ethereum
你的專案可以選擇要投入哪個 sponsor 的獎金,一個專案可以投入多個 sponsor 底下,這樣獲獎機會也會比較高。
我選擇的 sponsor 是 zkSync,他們的說明如下:
zkSync is a user-centric zkRollup developed by Matter Labs. It uses zero-knowledge proofs to keep data availability on mainnet to achieve exponentially lower transaction costs. You may have seen us powering projects such as payments and Gitcoin Grants. We are currently rapidly developing zkSync 2.0, which will feature EVM-compatibility in testnet May 2021, soon followed by zkPorter, our new exponential scalability solution.
PrizeszkSync will be awarding their Prizes as follows:
- 1 winner — 4,000 USDC
- 2 winners — 2,000 USDC
- 4 winners — 500 USDC
We encourage builders to utilize zkSync SDK’s, implemented in JavaScript/Typescript and Rust. Prizes will be awarded to projects that make it simpler and easier for non-technical users to use zkSync, other ideas include integrations of current tools such as in Gitcoin Grants and tools for easy mass payments and multi-sigs.
社群互動
這個 hackathon 很棒的地方是他把使用者體驗做的很好。每個人都會有自己的 dashboard 顯示目前專案的進度和一些訊息。
Check-In #1 和 Check-In #2 的階段會要你提供專案的構想,你隨時都可以修改。主辦方會看你提交的資訊,幫助你找到適合的 sponsor,或是給你一些建議,就算是一人參賽也能感受到回饋。
整個賽程期間,社群都是使用 discord 在互動,discord 裡頭有很多頻道,像是基本的大會報告的頻道,或是一些不重要的迷因、閒聊頻道都有。
每個 sponsor 也都有自己的頻道,我就會在 sponsor-zksync 的頻道詢問技術的問題,例如我想問問 zkSync 一些關於專案構想的意見:
Hi there, I want to build a gas fee relayer which make my ERC-20 token transfer without transaction fee, to be more precise, delegating gas payment by another party. I think this is done by GSN https://opengsn.org/ , but maybe it could built on L2 with zkSync? I’m not sure, could somebody give me some advice about this topic?
zkSync 團隊的人回應我:
This is an amazing idea! This can totally be built, as we support batching transactions which can be used for all kinds of creative things such as paying for transaction fees in an erc-20 token. Your idea seems like a combination of that and the gitcoin grants integration. To get started, I suggest you watch the short 10 minute presentation I made on using the SDK and batching. Looking forward to your project!!
在 Check-In #2 的時候,我提交新版的專案構想,有一個欄位是問:「目前專案遇到什麼阻礙?」我的問題應該是被主辦方貼給 zkSync 的團隊,於是 zkSync 的團隊成員就用 discord 私訊我,貼了一些程式碼教我怎麼使用他們的 Javascript SDK,這突如其來的救援也幫了大忙。
除此之外,主辦方每個禮拜都會寄 email 通知一些重要的活動,賽程期間舉辦了四個 Summits 研討會,邀請世界各地有名的以太坊開發者分享議題,主辦方還有一個自己的 TV 網頁,直播所有的線上活動。這些活動都有錄影,可以在 youtube 看到過去所有的演講內容:https://www.youtube.com/c/ETHGlobal/videos
因為我的作品是使用 zkSync 的 Javascript SDK 製作的,好像也只能投稿 zkSync 作為獎金的 sponsor,不過主辦方在最後一個禮拜,也寄 email 告訴我說可以多投稿不同的 sponsors 看看,他依據我的專案構想給我一些適合的 sponsors 作為參考。
不過最後我還是只投稿了 zkSync,有點懶著再看其他 sponsors 的文件,也覺得其他 sponsors 的題目需要花比較大的功夫才能完成,一個人能力有限,就做點簡單的東西就好。
關於我的專案 — Gas Relay Service
在以太坊的世界,每一筆交易都需要額外付一筆交易費,也就是以太坊的 gas fee。
我的專案是讓「收款人」能夠幫「付款人」支付以太坊的手續費。
在黑客松之前,我就想研究「第三方支付手續費」的議題,因此我大部分時間其實都在研究一般的 meta-transactions 是怎麼實作的,有興趣的人可以看看 simple meta-transactions 的原始碼:https://github.com/chnejohnson/simple-meta-transaction
之後我才開始玩 zkSync 的 SDK,並研究怎麼在 Layer 2 實現第三方支付手續費的問題,以下就附上作品連結以及簡單的專案介紹給有興趣的人參考:https://showcase.ethglobal.co/scaling/gas-relay-service-on-zksync
The target is that token sender can choose to find another account to pay for fee. The another account can be (1) the token receiver’s account, (2) sender’s another account, (3) third party’s account.
In this project, I finished the demo, which is the (1) above, that receiver pay gas fee for the sender.
有趣的是,我在研究 meta-transactions 時學到很多智能合約的寫法,結果在最後專案上都沒用到(沒寫到合約的程式),zkSync Javascript SDK 其實很簡單,他們的文件寫得很清楚。最後 Demo 還是用 zkSync 團隊的成品修改來的…XD。
所幸在沒有懂太多技術的前提下完成了這場黑客松的專案,成功贖回了 0.01 顆以太幣。
評審與決選
整個賽程來到最後一個禮拜,主辦方安排兩天的時間進行 Judges,使用 zoom 進行線上研討會,一個人基本上是 7 分鐘,前 4 分鐘播放 Demo 簡報,後三分鐘會有評審問問題。
第一個問題是說:「Demo 中你是使用 zkSync 的錢包網頁去操作,那實際上你做得部分是什麼?」
我就回答我在他們的網頁上加了一顆按鈕,使用他們的 SDK 做出 gas relay 的功能,還有一個後端的 server 去作 relay。
第二個問題大概是問:「什麼樣的情境下會需要由 receiver 幫 sender 支付 gas fee?」
我的回答是,在一般超商購物的情境,消費者通常只支付商品的價格,不會支付額外的交易費,我認為以太坊的手續費應該屬於軟體的營運成本,由賣方支付比較適合。那如果賣方希望手續費的成本是由消費者承擔,可以直接調高商品的價格。
當然,我英文講得零零落落,希望評審有聽懂就是了…
最後一場直播就是 Finale 決選,主辦方選出十二個隊伍,公開再 Demo 一次,以及提供線上觀眾詢問問題,至此整個賽程就差不多進入尾聲。
決選後的不久,主辦方就公布了這次有獲得獎金的隊伍,幸運拿到了 zkSync 頒發的小獎~
zkSync — Matter Labs
- Zeneth — 2000 USDC
- ZeroSwap — 1500 USDC
- Kangaroo — 500 USDC
- Gas Relay Service — 500 USDC
後記
這次的參賽隊伍中,Zeneth 跟我的主題非常相似:
Zeneth — Use Flashbots to enable arbitrary meta-transactions so EOAs can enter L2s without ETH
另一個我覺得有趣的專案是 Alexandria:
Alexandria — A dApp using STARKs to verify aspects of your identity without revealing more than you should
沒想到主辦方 ETHGlobal 下個月又要再舉辦一場黑客松,有興趣的人可以看看:https://defi.ethglobal.co/ ,這次的主題是 De-Fi。
最後,只要有到 ETHGlobal 的 TV 網頁參加 Summit 研討會的直播,就能夠獲得 POAP 勳章,它就是一個酷東西~😋
POAP: Proof of Attendance Protocol
Scaling Ethereum 參賽心得 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
this in javascript 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] Tornado Cash 實例解析
✍️ Johnson
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Tornado Cash 是一個使用 zk-SNARKs 建立的 Dapp,它實現了匿名的代幣交易,這篇文章就用一些程式碼片段,來分享它是怎麼運作的。
本文為 Tornado Cash 研究系列的 Part 3,本系列以 tornado-core 為教材,學習開發 ZKP 的應用,另兩篇為:
Part 1:Merkle Tree in JavaScript
Part 2:ZKP 與智能合約的開發入門
Special thanks to C.C. Liang for review and enlightenment.
我們知道在以太坊上的交易紀錄都是公開的,你可以在 etherscan 上看到某個地址的所有歷史交易紀錄,當然地址是合約的話也是一樣。
也許創建一個新的錢包和地址就好了?假設一個情境是 Alice 想要匿名傳送 1 ETH 給 Bob,Alice 原本的錢包是 A,但她不想讓 A 地址傳給 Bob 的交易紀錄被看到,所以 Alice 創建另一個錢包 B,顯然 B 錢包是空的,Alice 必須把 A 錢包的 1 ETH 傳到 B 錢包,再用 B 錢包的地址傳給 Bob。
但問題就在於,只要追蹤 B 錢包的地址,就能看到 B 的歷史交易紀錄中 A 錢包曾經打幣給 B 錢包,於是到頭來交易還是被追蹤到了。
Tornado Cash 的解決方案,簡單來說,它是一份合約,當你要匿名傳送代幣時,就把一定數量的幣丟進合約裡 (Deposit),此時你會拿到一個 note,長得像這樣:
tornado-eth-0.1-5-0x3863c2e16abc85d72b64d78c68fca5936db2501832e26345226efdfb2bc45804977f167d86b711bb6b4095ddaa646ec93f0a93ac4884a66c1d881f4fc985
note 就是一串字串,擁有這字串的人,就能提領 (Withdraw) 剛剛傳入合約的代幣。握有 note 就代表擁有提款的權利,所以 note 一旦被別人知道,別人就可以把錢給提走。
其中,後面那段亂碼,本篇文章就以「秘密」來稱呼,這個秘密是由 secret 與 nullifier 組成,而這兩個都是在鏈下隨機產生的亂數。
因此 Tornado 的合約基本上會有兩個函式:
Deposit
Withdraw
有興趣的人可以先到 Dapp 上先玩一次看看,使用 Goerli 測試網,這裡可以領 Goerli 的代幣:https://goerli-faucet.slock.it/
Deposit
我們就從 Deposit 開始說起,簡單來說, Deposit 是將資料儲存到合約的 Merkle Tree 上。
剛剛提到的秘密,它是在鏈下產生,由 secret 跟 nullifier 組成,合在一起之後也稱作 preimage,因為我們要對這個 preimage 進行 hash,就會成為 commitment。
合約中 Deposit 如下:
deposit 除了傳送代幣到合約之外,需填入一個參數 _commitment。
我們對 preimage 使用 Pedersen 作為 hash function 加密後產生 commitment,以偽代碼表示如下:
const preimage = secret + nullifier;const commitment = pedersenHash(preimage);
這個 commitment 會成為 Merkle Tree 的葉子,所以合約中的 _insert(commitment) 來自 MerkleTreeWithHistory.sol 的合約,將我們的資料插入 Merkle Tree,然後回傳一個 index 給你,告訴你這個 commitment 在 Merkle Tree 上的位置,最後一起發布成公開的 Deposit 事件。
我們知道 MerkleTree 是將一大筆資料兩兩做雜湊後產生一個唯一值 root,這個 root 就是合約上所儲存的歷史資料。
root 的特性就是只要底下的資料一有更動,就會重新產生新的 root。
所以只要一有用戶 deposit ,就會插入新的葉子到 Merkle Tree 上,於是就會產生新的 root,所以在合約中有一個陣列是用來儲存所有的 root 的 roots:
bytes32[ROOT_HISTORY_SIZE] public roots;
roots 是用來紀錄每個 deposit 的歷史,每一次 deposit 都會創造新的 root,而所有 root 都會被儲存進 roots 裡,於是當你要提領的時候,就要證明你的 commitment 所算出的 root 曾經出現在 roots 裡,代表曾經有 deposit 的動作,因此才可以進行提領。
Withdraw
在 Deposit 之前 Tornado Cash 就會在鏈下產生秘密後交給使用者,擁有這個秘密的人等於擁有提款的權利。
提領的時候,秘密會在鏈下計算後產生 proof,proof 是 withdraw 需要的參數,所以只要確保這個 proof 能夠被驗證,那麼代幣的接收地址 (recipient) 就可以隨便我們填,只要不填上當初拿來 deposit 用的地址,基本上就做到匿名交易的效果了。
也就是說,產生這個 proof 並提交給合約,能夠證明此人知道秘密,但卻不告訴合約秘密本身是什麼。
function withdraw(bytes calldata _proof, bytes32 _root, bytes32 _nullifierHash, address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) external payable nonReentrant;
我們可以清楚看到 withdraw 函式裡沒有接收有關秘密的任何資訊作為參數,也就是秘密不會與合約有所接觸,也不會暴露在 etherscan 上。
回顧 ZKP 所帶來的效果:
鏈下計算
隱藏秘密
在 Tornado Cash 的例子中,我們用秘密來產生證明,完成的鏈下計算包括:
將秘密 hash 成 commitment
算出 Merkle Tree 的 root。
以下是簡化後的 withdraw.circom:
template Withdraw(levels) { signal input root; signal input nullifierHash;
signal private input nullifier; signal private input secret; signal private input pathElements[levels]; signal private input pathIndices[levels];
component hasher = CommitmentHasher(); // Pedersen hasher.nullifier <== nullifier; hasher.secret <== secret; hasher.nullifierHash === nullifierHash;
component tree = MerkleTreeChecker(levels); // MiMC tree.leaf <== hasher.commitment; tree.root <== root; for (var i = 0; i < levels; i++) { tree.pathElements[i] <== pathElements[i]; tree.pathIndices[i] <== pathIndices[i]; }}
component main = Withdraw(20);
從上述代碼就可以看出這份 circuit 的 private 變數有:
secret
nullifier
pathElements
pathIndices
而 public 變數有:
root
nullifierHash
如同我們一開始說過的,秘密就是指 secret 與 nullifier。這裡進行的鏈下計算就是對 secret 與 nullifier 雜湊成 commitment。而使用的 hash function 叫做 Pedersen。
在進行 Merkle Tree 的計算之前,我們還檢查了 nullifier 雜湊後的 nullifierHash 跟 public 變數 nullifierHash 是不是一樣的。
hasher.nullifierHash === nullifierHash;
接下來,開始計算 Merkle Proof,用意是確認經過雜湊後的 commitment 有沒有出現在 Merkle Tree 上,所以我們的 private input 還有 pathElements 與 pathIndices(詳情參考 Part 1 Merkle Tree in JavaScript),讓它跑一趟 Merkle Proof 的計算,最後就能夠算出一個 root,再確認計算後的 root 與我們的 public 變數 root 是否一樣。
tree.root <== root;
於是我們就能產生一個 ZKP 的證明 — 證明 private 變數:secret, nullifier, pathElements, pathIndices 可以計算出 public 變數:root 與 nullifierHash。
把這個證明提交給合約,合約透過 Verifier 驗證 proof 是否正確,以及必須事先確認:
public 變數 root 有在合約的 roots 裡面。
public 變數 nullifierHash 在合約中是第一次出現。
以下附上完整的 withdraw 原始碼:
必須注意 ZKP 是向合約證明使用者填入的 secret 和 nullifier 可以計算出某個 root,但無法保證這個 root 曾經在合約的 roots 歷史上。
所以合約的 withdraw 中,除了 verifyProof 之外,還要事先檢查 ZKP 算出來的 root 是不是真的在歷史上發生過,所以需要 isKnownRoot 的檢查:
function isKnownRoot(bytes32 _root) public view returns(bool)
必須先檢查 isKnownRoot 後才能進行 verifyProof。
經過 verifyProof 驗證成功後,合約就開始進行提款的動作,也就會將代幣傳到 recipient 的地址,最後拋出 Withdrawal 的事件。
nullifier 與 nullifierHash
為什麼我們的秘密不是只有 secret 還要額外加一個 nullifier?
簡單來說,這是為了防止已經提領過的 note 又再提領一次,也就是所謂的 double spend。
require(!nullifierHashes[_nullifierHash], "The note has been already spent");
可以看到 withdraw 需要填入參數 nullifierHash,跟 isKnownRoot 一樣的狀況,我們需要對電路的 public 變數先經過一層檢查之後,才能帶入到 verifyProof 裡面。
nullifierHash 可以理解為這個 note 的 id,但它不會連結到 deposit,因此可以用來紀錄這個 note 是否已經被提領過。
所以當 verifyProof 驗證成功之後,我們要紀錄 nullifierHash 已完成提領:
nullifierHashes[_nullifierHash] = true;
有關為什麼需要事先檢查 public 變數後,才能帶入 verifyProof ,可以參考 Part 2:ZKP 與智能合約的開發入門 提到的 publicSignals 的部分。
附上 Tornado Cash 的架構圖:
簡化版的 tornado-core
tornado-core 的程式碼很簡潔漂亮,所以我模仿該專案自己實作一遍:
simple-tornado:https://github.com/chnejohnson/simple-tornado
這份專案只完成了 tornado-core 的核心部分,不一樣的是我的開發環境使用 hardhat 與 ethers 寫成,而 circom 與 snarkjs 使用官方當前的版本,合約用 0.7.0,測試使用 Typescript 。
比起兩年前的 tornado-core ,simple-tornado 使用的技術更新,可能更適合初學者理解這份專案,但是它有 bug…我在 issues 的地方有紀錄說明。
在開發的過程中,我的順序是先從最小單位的 MiMC hash function 開始玩,發現必須 javascript 算一次 hash、solidity 算一次、circom 再算一次,確保這三個語言對同一個值算出同樣的 hash 之後,才能放心去做更複雜的 Merkle Tree。
總結
我們可以看到 Tornado Cash 簡單的兩個函式:Deposit 與 Withdraw,透過將代幣送入合約後再提領到另一個地址的流程,應用 ZKP 達成匿名的交易。
除了斷開 Deposit 與 Withdraw 的地址關聯性之外,Tornado Cash 還有做了一層「藏樹於林」的隱私防護,這部份的解釋就請參考 ZKP 讀書會 Tornado Cash。
網路上很多關於 ZKP 的文章或專案都是在 2019 年後出產的,經過許多人對這項技術的嘗試,讓我們對 ZKP 有了更清晰的理解,如今兩年後,開發工具也變得更加成熟,期待未來在 web 隱私議題上能看到更多 ZKP 大放異彩的應用。
原始碼
tornado-core
simple-tornado
參考資料
ZKP 讀書會 Tornado Cash
Tornado Privacy Solution Cryptographic Review
Tornado Cash 實例解析 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
this in javascript 在 Youji Youtube 的最佳貼文
お客様の中にJavaScriptに詳しい方はいらっしゃいませんか?
セレクトボックスの選択肢の配列を切り替える方法がワーカリーマセーン
よってフェス用ステージと通常ステージの切り替えにはツールの再起動を要します。悪しからず
~~~~~~~~~~~~ 日本語 / Japanese ~~~~~~~~~~~~
< ご挨拶 >
初めまして。ヨージです。アメリカに住んでいる純日本人です。
主にスコープ付きチャージャーを使います。
【フレンドコード】: SW-3516-9899-0870
* フレンド申請を送ったら”必ず”Switchで使っているお名前を教えて下さい!
* たまにフレンド整理が必要な時がありますが、消去されても次に遊ぶ時にまた送ってくだされば幸いです。
< 配信について >
気分に合わせてレギュラー、リグマやレーティングプラベをやります。
まれにサモランもやります。たつじん限定でおねがいします。
レギュラーマッチ以外は人数が多ければ交代などしていきます。
【パスワード(リグマとサモラン)】: 3745
# レーティングプラベについて
可能な限りウデマエ差をなくしてチーム分けを行うプラベです。
もっと詳しい説明などはプラベ開催時に行います。
【パスワード(プラベ専用)】: 0541
* いずれかのルールのウデマエがB-以上の方限定です。
* 初参戦時、過去に到達した一番高いウデマエを教えて下さい。
XならXパワー、S+ならその後の数字も一緒に教えて下さい。
* 初参戦後にウデマエを更新した場合は報告してください。
* 武器編成は真面目に頼みますよ!譲り合いは平和の象徴です。
< 決まりごと >
# ざっくりなルール
* 暴言・煽りはそっちの自由。だが、裁くのはこっちの自由だ。
* (回線落ちなどで)他人に迷惑を掛けたら謝りましょう!幼稚園で習いましたよね。
* 英語圏リスナーさんのチャットの翻訳は受け付けておりません。
例外として、伝える必要がある内容だと判断した場合は自発的に翻訳します。
* ナワバリ合流時に連続で待機になったり、レーティングプラベの準備に時間が掛かっても忍耐強く待てるリスナーさんは理想的です!
* 人数合わせが大変なので、リグマやプラベを抜ける際は一言下さい。
可能であれば前もって言ってくださるととても助かります。
* 不良ではないのでタイマンはしません。大人なのでかくれんぼもできません。
# 禁止事項
ここに書かれていないことでも一度注意されたら辞めてもらえると助かります。
* 放置や意図的な回線切断
* 裏部屋の作成・やり取り
* 他プレイヤーに対する指示
* 自分や他人の個人情報の開示
* 個人的なネガティブな話
* リスナー同士の他人が混ざれない会話
* 似た・同じ内容の発言の繰り返し
* 宣伝・売名行為
* その他公序良俗に反する発言
それでは、健闘を祈る!
~~~~~~~~~~~~ English / 英語 ~~~~~~~~~~~~
{ Greeting }
Hello. My name is Youji. I'm full Japanese who living in U.S. Nice to meet you. I use chargers at most of the time.
[My Friend Code] SW-3516-9899-0870
* If you sent a friend request, you MUST tell me your name on Switch!
* I need to organize my friends sometimes, but you may resend it when you play next time.
{ About Stream }
I play regular, league or rating private mainly. I play salmon occasionally with Profreshional only. We’ll take turns if there are many players who want to join.
[Password (league or salmon]: 3745
# About Rating Private
It;’s a special private battle that makes no rank gaps between the both team. I’ll explain the detail when we actually playing it.
[Password (only for private)] 0541
* You must be at least B- for any of the rules.
* Tell me what was your highest rank in the past. Tell me your X Power or a number among S+ if applicable.
* If you raised your rank after the last time you played this, tell me.
* Please be serious to choose your weapon. The concession is very important for a peaceful stream.
{ Rules }
# General
* It’s your choice to disrespect others or squidbagging, but it’s my choice to penalize you.
* If you annoy others (eg. disconnect), it’s a manner to apologize. I assume you already learned that at kinder garden.
* It’s helpful if you say you want to leave in advance when we playing league, salmon or private.
# Prohibitions
Please watch out your actions even it’s not wrote on here if I warned you.
* AFK while playing the game / Disconnect on purpose
* Telling others what to do
* Telling your or others’ personal information
* Talking about your personal negative stories
* Talking to other viewers about personal topics that no one else can join
* Posting the same or similar message over and over
* Advertising
* Any other inappropriate talks
Have a good luck!
~~~~~~~~~~~~ アドバタイズ / Advertise ~~~~~~~~~~~~
このチャンネルのメンバーになるには下のURLにアクセスすればいいかもよ。
You can join as a member from the link below.
https://www.youtube.com/channel/UC8UO9XDFb2MedQFptOBUlIw/join
Twitch
メイン配信サイト。ワンピースの世界ではラフテルと呼ばれる。
My main streaming platform. The final destination for all of my viewers.
https://www.twitch.tv/youjiman
Twitter (JPN)
誰か分かる人ならフォロー返しするかもよ。
https://twitter.com/youjiman
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#NintendoSwitch#スプラトゥーン2#Splatoon2#視聴者参加型#PlayingwithViewers
Support the stream: https://streamlabs.com/youjiman
this in javascript 在 Youji Youtube 的最讚貼文
お客様の中にJavaScriptに詳しい方はいらっしゃいませんか?
セレクトボックスの選択肢の配列を切り替える方法がワーカリーマセーン
よってフェス用ステージと通常ステージの切り替えにはツールの再起動を要します。悪しからず
~~~~~~~~~~~~ 日本語 / Japanese ~~~~~~~~~~~~
< ご挨拶 >
初めまして。ヨージです。アメリカに住んでいる純日本人です。
主にスコープ付きチャージャーを使います。
【フレンドコード】: SW-3516-9899-0870
* フレンド申請を送ったら”必ず”Switchで使っているお名前を教えて下さい!
* たまにフレンド整理が必要な時がありますが、消去されても次に遊ぶ時にまた送ってくだされば幸いです。
< 配信について >
気分に合わせてレギュラー、リグマやレーティングプラベをやります。
まれにサモランもやります。たつじん限定でおねがいします。
レギュラーマッチ以外は人数が多ければ交代などしていきます。
【パスワード(リグマとサモラン)】: 3745
# レーティングプラベについて
可能な限りウデマエ差をなくしてチーム分けを行うプラベです。
もっと詳しい説明などはプラベ開催時に行います。
【パスワード(プラベ専用)】: 0541
* いずれかのルールのウデマエがB-以上の方限定です。
* 初参戦時、過去に到達した一番高いウデマエを教えて下さい。
XならXパワー、S+ならその後の数字も一緒に教えて下さい。
* 初参戦後にウデマエを更新した場合は報告してください。
* 武器編成は真面目に頼みますよ!譲り合いは平和の象徴です。
< 決まりごと >
# ざっくりなルール
* 暴言・煽りはそっちの自由。だが、裁くのはこっちの自由だ。
* (回線落ちなどで)他人に迷惑を掛けたら謝りましょう!幼稚園で習いましたよね。
* 英語圏リスナーさんのチャットの翻訳は受け付けておりません。
例外として、伝える必要がある内容だと判断した場合は自発的に翻訳します。
* ナワバリ合流時に連続で待機になったり、レーティングプラベの準備に時間が掛かっても忍耐強く待てるリスナーさんは理想的です!
* 人数合わせが大変なので、リグマやプラベを抜ける際は一言下さい。
可能であれば前もって言ってくださるととても助かります。
* 不良ではないのでタイマンはしません。大人なのでかくれんぼもできません。
# 禁止事項
ここに書かれていないことでも一度注意されたら辞めてもらえると助かります。
* 放置や意図的な回線切断
* 裏部屋の作成・やり取り
* 他プレイヤーに対する指示
* 自分や他人の個人情報の開示
* 個人的なネガティブな話
* リスナー同士の他人が混ざれない会話
* 似た・同じ内容の発言の繰り返し
* 宣伝・売名行為
* その他公序良俗に反する発言
それでは、健闘を祈る!
~~~~~~~~~~~~ English / 英語 ~~~~~~~~~~~~
{ Greeting }
Hello. My name is Youji. I'm full Japanese who living in U.S. Nice to meet you. I use chargers at most of the time.
[My Friend Code] SW-3516-9899-0870
* If you sent a friend request, you MUST tell me your name on Switch!
* I need to organize my friends sometimes, but you may resend it when you play next time.
{ About Stream }
I play regular, league or rating private mainly. I play salmon occasionally with Profreshional only. We’ll take turns if there are many players who want to join.
[Password (league or salmon]: 3745
# About Rating Private
It;’s a special private battle that makes no rank gaps between the both team. I’ll explain the detail when we actually playing it.
[Password (only for private)] 0541
* You must be at least B- for any of the rules.
* Tell me what was your highest rank in the past. Tell me your X Power or a number among S+ if applicable.
* If you raised your rank after the last time you played this, tell me.
* Please be serious to choose your weapon. The concession is very important for a peaceful stream.
{ Rules }
# General
* It’s your choice to disrespect others or squidbagging, but it’s my choice to penalize you.
* If you annoy others (eg. disconnect), it’s a manner to apologize. I assume you already learned that at kinder garden.
* It’s helpful if you say you want to leave in advance when we playing league, salmon or private.
# Prohibitions
Please watch out your actions even it’s not wrote on here if I warned you.
* AFK while playing the game / Disconnect on purpose
* Telling others what to do
* Telling your or others’ personal information
* Talking about your personal negative stories
* Talking to other viewers about personal topics that no one else can join
* Posting the same or similar message over and over
* Advertising
* Any other inappropriate talks
Have a good luck!
~~~~~~~~~~~~ アドバタイズ / Advertise ~~~~~~~~~~~~
このチャンネルのメンバーになるには下のURLにアクセスすればいいかもよ。
You can join as a member from the link below.
https://www.youtube.com/channel/UC8UO9XDFb2MedQFptOBUlIw/join
Twitch
メイン配信サイト。ワンピースの世界ではラフテルと呼ばれる。
My main streaming platform. The final destination for all of my viewers.
https://www.twitch.tv/youjiman
Twitter (JPN)
誰か分かる人ならフォロー返しするかもよ。
https://twitter.com/youjiman
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#NintendoSwitch#スプラトゥーン2#Splatoon2#視聴者参加型#PlayingwithViewers
Support the stream: https://streamlabs.com/youjiman
this in javascript 在 serpentza Youtube 的最佳解答
You'll see young women coding, soldering and selling all sorts of technology in the tech markets of Mainland China, this is very different to the traditionally male dominated tech industry in the west. That isn't to say that women are not in the minority here, but they're a big part of the technology game, especially in China's silicon valley of hardware, Shenzhen. I meet up and speak to the most famous female Maker and Coder Naomi "SexyCyborg" Wu and we go for an adventure around China's biggest technology market. Come and join us to find out how women are holding up half the sky in the Chinese technology sector.
Naomi's channel: https://www.youtube.com/channel/UCh_ugKacslKhsGGdXP0cRRA
Naomi's twitter:
@RealSexyCyborg
Max's contact details:
Email: [email protected]
Mobile: +8615889674711
QQ: 2853753197
M.J's contact details:
Email: [email protected]
Mobile: +8613713895188
QQ: 1661331991
C-milk's Hooters video: https://www.youtube.com/watch?v=dQ4mSVB2CCU
Naomi Wu (a pseudonym) is a Cantonese DIY maker who lives and works in Shenzhen, China; she is notable for her strong advocacy of women in STEM, transhumanism, open source, and body modifications, variously challenging both gender and tech stereotypes with her flamboyant public persona. She first came to public prominence on Reddit, where she has mostly male followers, and she maintains active Reddit and Twitter accounts under the noms de plume of SexyCyborg and RealSexyCyborg, respectively, as an internet personality. Professionally she is a web developer, coding in Ruby on Rails and JavaScript under a masculine pseudonym for overseas clients both for safety's sake and to preclude gender discrimination; she also reviews electronics. She regards "Chinese gadgets" as good as or better than foreign, and on International Women's Day 2017 she was listed as one of the 43 most influential women in 3D printing, a male-dominated field, by 3D Printer & 3D Printing News.
⚫ Watch Conquering Southern China (my documentary) and see China like no one outside of China has ever seen it before: https://vimeo.com/ondemand/conqueringsouthernchina
⚫ Support me on Patreon: http://www.patreon.com/serpentza
Join me on Facebook: http://www.facebook.com/winstoninchina
Twitter: @serpentza
Instagram: serpent_za
My other channel: https://www.youtube.com/c/advchina
Music used: Virtual Vice - Sanctuary Runner
Artist's bandcamp: https://new-world.bandcamp.com/album/off-duty
this in javascript 在 Demystifying JavaScript this Keyword with Practical Examples 的推薦與評價
In JavaScript, you can use the this keyword in the global and function contexts. Moreover, the behavior of the this keyword changes between strict and ... ... <看更多>
this in javascript 在 What does 'var that = this;' mean in JavaScript? - Stack Overflow 的推薦與評價
... <看更多>
this in javascript 在 鐵人賽:JavaScript 的this 到底是誰? | 卡斯伯Blog - 前端 的推薦與評價
鐵人賽:JavaScript 的this 到底是誰? This 的在JS 使用上非常頻繁,但一個this 每個function 都各自表示,這裡就直接用範例說明This 有哪些情境, ... ... <看更多>